################################################################################
# Programa princiapal do Sistema de Backup
# Autor Fausto Levandoski
# Funcoes conf_parser, notifica, log
#   conf_parser - recebe um arquivo e exporta as variaveis para o sistema
#   notifica - faz a notificacao por email 
#   log - grava o log do programa
# Arquivos de configuracao
#  ../config/sisbackup.conf - contem as variaveis para envio de notificacao
#  ./NOMEDOJOB.job.cfg - contem as variaveis para execucao do backuo
#  ./NOMEDOJOB.folder.cfg - contem os diretorios a serem backupeados
# Funcionamento
#   Com base nos arquivos de configuracao gerados pela interface kommander
#   do sistema o programa lera estes arquivos e executara o que nele esta setado
#
################################################################################

#Subrotinas
conf_parser() {
   [ -e ${1} ] || die "Arquivo nao encontrado: $1";
   [ -r ${1} ] || die "Nao foi possivel ler o arquivo $1";
   for line in `cat ${1} | cut -d= -f1`; do
      export ${line}=`cat ${1} | grep "${line}" | cut -d= -f2`;
   done
   return 0;
}

notificaemail() {
  mail -s 'Backup' -r $FROM $EMAIL <  $LOG$DIAHORA.log
}

notificatwitter() {
  USUARIO="seu_usuario"
  SENHA="sua_senha"

  CURL="/usr/bin/curl"

  if [ -z $1 ]; then
     echo "Use: $0 "
     exit 1
  fi

  # Go for it
  $CURL -u $USUARIO:$SENHA \
      -d status=`echo $@ | tr ' ' '+'` \
      http://twitter.com/statuses/update.xml 1> /dev/null 2>&1

  if [ $? == 0 ]; then
     echo "Sucesso."
     echo "Mensagem: $@"
  else
     echo "Nao foi possivel enviar a mensagem. Verifique sua conectividade."
     exit 1
  fi
}

log() {
  if [ -e $LOG$DIAHORA.log ]
   then
     echo $1 >> $LOG$DIAHORA.log;
   else 
     echo $1 > $LOG$DIAHORA.log
   fi
}

#Variaveis do ambiente
DIAHORA=`date +%Y%m%d-%H:%M`
DIA=`date +%Y%m%d`
FROM=admin@local.com.br

#Diretorio destino dos LOGS
LOG=/var/log/SisBackup2/

#Diretorio de configuracao
CONFDIR=/etc/SisBackup2/config

#Arquivo de configuracao
CONFFILE=/sisbackup.cfg

#Carrega configuracoes
conf_parser $CONFDIR$CONFFILE

#Diretorio destino arquivos
DESTDIR=/tmp/SisBackup2/backups

#Carrega variaveis referentes ao job
conf_parser $1

log "INICIO DO PROCESSO DE BACKUP"

SOMA=0

#adiciona os diretorios ao arquivo de backup e depois compacta

SOMA=0
if [ "$DESTINATIONS" == "cdrw" ];
 then 
   for folders in `cat $FOLDERS`;
   do
     TAM=`du -s $folders | awk '{print $1}'`
     SOMA=`expr $TAM + $SOMA`i
     #deve fazer quebrar em arquivos de 640MB
     tar -rvf $DESTDIR/backup$DIA.tar $folders >> $LOG$DIAHORA.log
   done

 else
   #limpa diertorio temporario
   echo $FOLDERS
   rm -r $DESTDIR/*
   for folders in `cat $FOLDERS`;
   do     
     TAM=`du -s $folders | awk '{print $1}'`
     SOMA=`expr $TAM + $SOMA`
     #deve fazer quebrar em arquivos de 4.4GB
     tar -rvf $DESTDIR/backup$DIA.tar $folders >> $LOG$DIAHORA.log
   done

   #gera iso
   mkisofs -r -J -o $DESTDIR/backup.iso $DESTDIR

   #limpa cd
   cdrecord dev=0,0,0 speed=4 blank=fast

   #grava cd
   cdrecord -v -fs=16M speed=4 dev=0,0,0 -data $DESTDIR/backup.iso
fi

if [ "$NOTIFY" == "email" ];
then
   notificaemail
else
  if [ "$NOTIFY" == "twitter" ];
  then
     notificatwitter
  else
    if [ "$NOTIFY" == "email,twuitter" ];
    then
      notificaemail
      notificatwitter
    fi
  fi
fi

log "FIM DO PROCESSO DE BACKUP"
